Skip to content

各配置项的执行顺序 ​

本节目标:理解“各配置项的执行顺序”的核心思路,并能把它用于实际开发或面试表达。 Vue 配置项和生命周期钩子的执行顺序

  1. 初始化 props:
    • 执行 props 配置项中的数据验证和默认值处理。
    • 在此阶段,组件实例还未生成,只是对传入的 props 进行处理。
  2. 创建组件实例:
    • 创建组件实例,此时会调用 beforeCreate 生命周期钩子。
  3. 初始化组件数据:
    • 执行 data 配置项中的函数或对象,将返回值与组件实例的数据进行合并,生成组件实例的响应式数据。
  4. 执行生命周期钩子 created:
    • 执行 created 钩子函数,此时可以访问组件实例的数据和方法,但 DOM 还未生成。
  5. 初始化 computed:
    • 执行 computed 配置项中的函数,生成计算属性,并将其定义为组件实例的响应式数据。
  6. 初始化 watch:
    • 执行 watch 配置项中的函数,生成观察者,并将其订阅到组件实例的响应式数据上,监听数据的变化。
  7. 执行生命周期钩子 beforeMount:
    • 在挂载开始之前调用 beforeMount 钩子,此时模板已经编译完毕,但还未挂载到 DOM 上。
  8. 挂载组件:
    • 将编译后的模板挂载到 DOM 上,执行 mounted 钩子函数,此时可以进行 DOM 操作。

当组件实例的响应式数据发生变化时

  • 响应式更新:
    • 当组件实例的响应式数据发生变化时,依赖此数据的 watcher 会被触发,更新 DOM 并执行相应的回调函数。

执行顺序总结

  1. 初始化 props
  2. 创建组件实例:调用 beforeCreate
  3. 初始化 data
  4. 调用 created
  5. 初始化 computed
  6. 初始化 watch
  7. 调用 beforeMount
  8. 挂载组件:调用 mounted

细节说明

  • beforeCreate:此时无法访问 data 和 props。
  • created:可以访问 data 和 props,但 DOM 未生成。
  • beforeMount:模板已编译完毕,但未挂载到 DOM 上。
  • mounted:DOM 已挂载,可以进行 DOM 操作。

应用实例 在实际应用中,根据不同的生命周期钩子,可以执行不同的操作:

  • beforeCreate:很少使用,通常用于全局混入或插件的初始化。
  • created:可以进行初始化数据的获取、事件监听的设置等。
  • beforeMount:很少使用,可以在此处修改数据以影响初次渲染。
  • mounted:通常用于获取或操作 DOM 元素。
  • beforeUpdate:数据更新之前可以在此处执行操作,如手动修改状态。
  • updated:数据更新之后,可以操作更新后的 DOM 元素。
  • beforeDestroy:执行清理任务,如清除定时器、事件监听器。
  • destroyed:实例销毁后,进行清理操作,如解除绑定、清理内存等。

这个调整后的顺序和解释应该能更准确地描述 Vue 配置项和生命周期钩子的执行顺序。

本站总访问 — 次